css selector: Take advantage of interned strings
authorMatthias Clasen <mclasen@redhat.com>
Fri, 11 Sep 2015 00:04:24 +0000 (20:04 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 12 Sep 2015 15:24:42 +0000 (11:24 -0400)
We know these strings are interned, no need to use strcmp or
g_str_hash for hem.

gtk/gtkcssselector.c

index eed04f7b4184f972b1a9cd2374f72ae9e70030fa..aa279b2adebc2698434b4341e2bdac810ae0cef9 100644 (file)
@@ -778,13 +778,12 @@ static int
 gtk_css_selector_region_compare_one (const GtkCssSelector *a,
                                     const GtkCssSelector *b)
 {
-  int diff;
-
-  diff = strcmp (a->region.name, b->region.name);
-  if (diff)
-    return diff;
-
-  return a->region.flags - b->region.flags;
+  if (a->region.name < b->region.name)
+    return -1;
+  else if (a->region.name > b->region.name)
+    return 1;
+  else
+    return a->region.flags - b->region.flags;
 }
 
 static const GtkCssSelectorClass GTK_CSS_SELECTOR_REGION = {
@@ -851,14 +850,19 @@ match_id (const GtkCssSelector *selector,
 static guint
 hash_id (const GtkCssSelector *a)
 {
-  return g_str_hash (a->id.name);
+  return GPOINTER_TO_UINT (a->id.name);
 }
 
 static int
 comp_id (const GtkCssSelector *a,
         const GtkCssSelector *b)
 {
-  return strcmp (a->id.name, b->id.name);
+  if (a->id.name < b->id.name)
+    return -1;
+  else if (a->id.name > b->id.name)
+    return 1;
+  else
+    return 0;
 }
 
 DEFINE_SIMPLE_SELECTOR(id, ID, print_id, match_id, hash_id, comp_id, TRUE, FALSE, FALSE)